#ifndef _VFS_C_H_
#define _VFS_C_H_


#include <sys/epoll.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <mysql/mysql.h>

#define BUFFER_SIZE 4096

typedef struct DBINFO{
    char *server ;
    char *user;
    char *password;
    char *database;
}DBINFO;

typedef struct SQL{
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char *tName;//表名
    char **para;//参数列表
    int paraNum;
    int queryNum;//需要查询的参数，剩余为条件参数
    DBINFO *dbinfo;
}SQL;

typedef struct DIR_S {
    char *file_id;
    char *filename;
    char *pid;
    char *fileType;
    char *filepath;
    void **arr; 
    int flag; // 是否已被添加进数组中
    int capacity; // 数组容量
    int size; // 当前数组大小
    int isLast;
} DIR_S;

int initDb(DBINFO *dbinfo);
void * queryInfo(void *arg);
void free_dir(DIR_S *dir);
void freeDirs(DIR_S **dirs,int num);
void swap(DIR_S **left,DIR_S **right);
void sortDir(DIR_S *dir);
int compareDir(const void *c, const void *d);
void *queryVFS(void *para,int *num,MYSQL *conn);
void getTree(DIR_S *dir, int depth, char *buffer, int *offset);
void collect(DIR_S *dir, char *buffer, int *offset);
#endif